Any computer boots from power-off to a useful state using a boot process that involves finding and fetching the computer operating system kernel from a boot medium (for example disk, or network), and then having the kernel attach to a root file system in order to find the files and other data it requires to operate normally.
In all current computer systems this boot process can use a local storage medium (disk or other static memory) to provide all the data required for the boot process, and some computer systems enabled for network booting allow the required data to be copied from a remote source to a local storage medium either all at once as a downloaded disk image, or on demand as needed using a remote disk protocol (for example iSCSI or Sun ND). These boot processes and operating system kernels all expect a data source that looks like a random access block device (normally a disk) where the data source supplies data blocks by address and the requestor uses an organizing convention (a filesystem) to interpret and maintain the data on the block device.
Some boot processes and operating system kernels can also use a data source which supplies data by name, for example those that support “root on NFS” such as Solaris, and Linux. The traditional way to transform a named data source, such as a filesystem as presented by an operating system kernel to applications, to an address based data source as is required by some boot processes and operating systems in order to function, is to first create an image of an appropriate empty filesystem on disk, then populate that filesystem as required thereby filling the image of the filesystem on disk with data blocks that can subsequently be used by the boot process and operating system kernel of interest.